/**
 * @Author: 十二少 1484744996@qq.com
 * @Date: 2023-03-07 11:09:39
 * @LastEditors: 九璃怀特 1599130621@qq.com
 * @LastEditTime: 2023-12-29 11:59:03
 * @FilePath: \zxi-surface-manual\vite.config.ts
 * @Description:
 */
import { rmSync } from "node:fs";
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import electron from "vite-plugin-electron";
// import renderer from 'vite-plugin-electron-renderer'
import pkg from "./package.json";
import path from "path";

// https://vitejs.dev/config/
export default defineConfig(({ command }) => {
  rmSync("dist-electron", { recursive: true, force: true });

  const isServe = command === "serve";
  const isBuild = command === "build";
  const sourcemap = isServe || !!process.env.VSCODE_DEBUG;

  const useElectron = process.env.MY_ENV_VAR
    ? process.env.MY_ENV_VAR === "el"
    : true;

  return {
    plugins: [
      vue(),
      useElectron
        ? electron([
            {
              // Main-Process entry file of the Electron App.
              entry: "electron/main/index.ts",
              onstart(options) {
                if (process.env.VSCODE_DEBUG) {
                  console.log(
                    /* For `.vscode/.debug.script.mjs` */ "[startup] Electron App"
                  );
                } else {
                  options.startup();
                }
              },
              vite: {
                build: {
                  sourcemap,
                  minify: isBuild,
                  outDir: "dist-electron/main",
                  rollupOptions: {
                    external: Object.keys(
                      "dependencies" in pkg ? pkg.dependencies : {}
                    ),
                  },
                },
              },
            },
            {
              entry: "electron/preload/index.ts",
              onstart(options) {
                // Notify the Renderer-Process to reload the page when the Preload-Scripts build is complete,
                // instead of restarting the entire Electron App.
                options.reload();
              },
              vite: {
                build: {
                  sourcemap: sourcemap ? "inline" : undefined, // #332
                  minify: isBuild,
                  outDir: "dist-electron/preload",
                  rollupOptions: {
                    external: Object.keys(
                      "dependencies" in pkg ? pkg.dependencies : {}
                    ),
                  },
                },
              },
            },
          ])
        : null,
      // Use Node.js API in the Renderer-process
      // renderer({
      //   nodeIntegration: true,
      // }),
    ],
    server: useElectron
      ? process.env.VSCODE_DEBUG &&
        (() => {
          const url = new URL(pkg.debug.env.VITE_DEV_SERVER_URL);
          return {
            host: url.hostname,
            port: +url.port,
          };
        })()
      : {
          port: 5800,
          host: true,
          open: true,
        },
    resolve: {
      alias: [
        {
          find: "src",
          replacement: path.resolve(__dirname, "src"),
        },
        {
          find: "public",
          replacement: path.resolve(__dirname, "public/"),
        },
        {
          find: "~",
          replacement: path.resolve(__dirname, "src/components"),
        },
        {
          find: "utils",
          replacement: path.resolve(__dirname, "src/utils"),
        },
      ],
    },
    clearScreen: false,
    base:'./'
  };
});
